#include <stdio.h>


/**
 * 
 * @param A int整型一维数组 
 * @param ALen int A数组长度
 * @param B int整型一维数组 
 * @param BLen int B数组长度
 * @return void
 */
void merge(int* A, int ALen, int* B, int BLen) 
{

    int dec = ALen - 1 , src = BLen - 1 ; 

    int flag = ALen + BLen - 1 ;

    while (dec >= 0 && src >= 0) // 这里的条件一定要注意,当时在这里少些一段导致通过率只有75%. 这里的结束的情况是有两种的: 1.原数组的元素排序完了 2.新数组的元素值全填进去完成了
    {

        if (A [dec] > B [src])
        {

            A[flag] = A [dec] ;

            dec-- ;
            flag-- ;

        }

        else 
        {

            A [flag] = B [src] ;

            flag -- ;

            src-- ;
        
        }

    }

    while (src >= 0) 
    {

        A [flag] = B [src] ;

        flag-- ;

        src-- ;
    
    }
    // write code here
}

int main ()
{

    int A [6] = {4 , 5 , 6 , 0 , 0 , 0} ;

    int B [3] = {1 , 2 , 3} ;

    merge (A , 3 , B , 3) ;

    for (int i = 0 ; i < 6 ; i++)
    {

        printf ("%d " , A [i]) ;

    }

    return 0 ;

}